import {
	useLoginStore
} from "@/store/modules/login"

const TIME_OUT = 60000
const BASE_URL = 'https://www.codemy.top/api3'
// const BASE_URL = 'https://www.cyljx.xyz'


class LYRequest {
	request(method, options) {
		return new Promise((resolve, reject) => {
			// 判断是否有token
			const loginStore = useLoginStore()
			const token = loginStore.token
			options.header = token.name ? {
				[token.name]: token.value
			} : {};
			uni.request({
				url: BASE_URL + options.url,
				header: options.header,
				method: method || "GET",
				timeout: TIME_OUT,
				data: options.data,
				success(res) {
					// 请求成功情况
					if (res.data.code === 200) {
						// 假如该请求获取结果需要给一个提示框
						if (options.isShowMessage) {
							uni.showToast({
								icon: 'success',
								title: res.data.msg
							})
						}
						resolve(res.data)
					}

					// 异常
					if (res.data.code === 500) {
						uni.showToast({
							icon: 'error',
							title: "系统未知异常~"
						})
						return
					}

					// 跳转到登录页面的情况
					const codes = [403, 600, 601, 602, 603, 604, 605]
					if (codes.includes(res.data.code)) {
						uni.clearStorageSync()
						uni.showModal({
							title: '是否跳转登录页',
							content: res.data.msg,
							success(res) {
								if (res.confirm) {
									// 给登录页面携带一个参数，后续登陆成功通过options获取这个参数，就可以实现登陆后返回登录前页面
									uni.switchTab({
										url: `/pages/personal/personal`,
									})
								}
							},
						});

					}
				},
				fail(err) {
					reject(err)
				}
			})
		})
	}

	get(options) {
		return this.request("GET", options)
	}

	post(options) {
		return this.request("POST", options)
	}

	put(options) {
		return this.request("PUT", options)
	}
}
export default new LYRequest()